﻿/***********************************
* Classe ModelePaddock             *
* Avertissement : classe Singleton *
***********************************/

package utils.appli {
	
	//import utils.appli.events.ModeleCalcuEvent;
	
	import flash.events.EventDispatcher;
	import utils.appli.events.ModelePaddockEvent;
	
	import utils.appli.Cheval;
	import utils.appli.Case;
	
	public class ModelePaddock extends EventDispatcher /*implements IModelePaddock */{
		
		/*********************
		*propriétés statiques*
		*********************/
		
		/************************
		*propriétés d'occurrence*
		************************/
		
		private var _id:int;
		private var _couleur:uint;
		private var _casesArray:Array = new Array(6);
		
		/*************
		*constructeur*
		*************/
		
		public function ModelePaddock(aId:int, aCouleur:uint) {
			this._id = aId;
			this._couleur = aCouleur;
			this._casesArray = new Array(6);
		}
		
		/****************************
		*méthodes d'instance publiques*
		****************************/
		
		public function placeCheval(aCheval:Cheval, aNumCase:int):void{
			/*//this._casesArray.indexOf(
			if (this._casesArray[_joueurActif._numEntreeParcours] == null ){
				this._casesArray[_joueurActif._numEntreeParcours] = aCheval;
			}*/			
			if (this._casesArray[aNumCase] == null){
				this._casesArray[aNumCase] = aCheval;
			}
			// dispatch l'event avec le num de la case
			this.dispatchEvent(new ModelePaddockEvent(ModelePaddockEvent.CASE_OCCUPEE, false, false, aNumCase));
			
			
			// vérif si toutes les dernières cases sont occupées 
			if (this._casesArray[_casesArray.length-1] != null
				&& this._casesArray[_casesArray.length-2] != null
				&& this._casesArray[_casesArray.length-3] != null
				&& this._casesArray[_casesArray.length-4] != null){
				this.dispatchEvent(new ModelePaddockEvent(ModelePaddockEvent.PARTIE_GAGNEE, false, false, aNumCase));
			}
		}
		
		public function removeCheval(aCheval:Cheval):void{
			var numCase:int = this._casesArray.indexOf(aCheval);
			if (this._casesArray[numCase] != null){
				this._casesArray[numCase] = null;
			}
			this.dispatchEvent(new ModelePaddockEvent(ModelePaddockEvent.CASE_VIDEE, false, false, numCase));
		}

		/*******************
		*getters et setters*
		*******************/
		
		//accesseurs au modèle
		public function get id():int {
			return this._id;
		}
		
		public function set id(aId:int):void {
			this._id = aId;
		}
		
		public function get couleur():uint {
			return this._couleur;
		}
		
		public function set couleur(aCouleur:uint):void {
			this._couleur = aCouleur;
		}
		
		// méthode du tableau dans classe mère
		
	}
}//fin du package